大家好!
今天只會簡單介紹原型的繼承關係,當我們介紹完原型鏈後,就會詳細說明繼承的方法。
我們出發吧!
物件的 valueOf
方法是位於 Object
的原型:
/* 檢查 {} 指向的原型是否為 Object 的原型 */
({}).valueOf === Object.prototype.valueOf; // true
Object.prototype.isPrototypeOf({}); // true
Object.getPrototypeOf({}) === Object.prototype; // true
那麼,陣列的 valueOf
方法也是位於 Array
的原型嗎?
([]).valueOf === Array.prototype.valueOf; // true
([]).valueOf === Object.prototype.valueOf; // true
怎麼會這樣,陣列的 valueOf
方法究竟是位於哪裡?
事實上,陣列的 valueOf
方法位於 Object
的原型,因為 Array
的原型並沒有 valueOf
方法。
Array.prototype.valueOf === Object.prototype.valueOf; // true
/* 檢查 Array.prototype 是否有 valueOf 屬性 */
Array.prototype.hasOwnProperty('valueOf'); // false
/* 測試 Array.prototype 指向的原型是否為 Object.prototype */
Object.getPrototypeOf(Array.prototype) === Object.prototype; // true
這樣就能知道 Array
的原型所指向的原型就是 Object
的原型,也就是 Array
繼承了 Object
。
各位對於「繼承」會如何解釋呢?
差不多也到尾聲了。
如果對文章有任何疑問,歡迎於下方提問和建議!
我是 Felix,我們明天再見!